﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Configuration;
using System.Data.SqlClient;
using Website.Logger;
using DAL;
using UtilityExtensions;
using BOL;
using BOL.RendicionVentas;
using WebLib;
using System.Web.Script.Services;
using System.Web.Services;


namespace UILGestion.VentaAdmin.RendicionVenta
{
    public partial class RendicionVentaReadForm : System.Web.UI.Page
    {
        public RendicionVentaReadForm()
        {
            bol = new RendicionVentaBL();
            _db = new dbGestionDataContext(DbUtil.strConnString);
        }

        private RendicionVentaBL bol;
        private dbGestionDataContext _db;

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                try
                {
                    
                    internalID.Value = (string)Request.QueryString["id"];
                    
                    idProyecto.Value = (string)Request.QueryString["idProyecto"];
                    paginaAnt.Value = Page.Request.UrlReferrer.AbsoluteUri;
                    menuCtrl1.loadMenuVenta(idProyecto.Value.ToInt());
                    FormatForm();

                }
                catch (SqlException sqlex)
                {
                    WebServerSideSqlError.Log(sqlex);

                    ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                     "uniqueKey" + DateTime.Now, "alert('" + sqlex.Message.Replace("'", "") + "');", true);


                }
                catch (Exception ex)
                {
                    WebServerSideError.Log(ex);
                    ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                         "uniqueKey" + DateTime.Now, "alert('" + ex.Message.Replace("'", "") + "');", true);

                }

            }
        }

        private void FormatForm()
        {

           Load();
           

        }

       
        private void Load()
        {
            DAL.RendicionVenta rendicionVenta = DbUtil.Db.RendicionVentas.Single(p => p.idInternal == internalID.Value.ToInt());

            fechaTXT.Text = rendicionVenta.fecha.ToShortDateString();
            tipoCambioLBL.Text = rendicionVenta.tipoCambio.ToString("N3");
            conceptoLBL.Text = rendicionVenta.ConceptoItem.descripcion;
            usuarioLBL.Text = rendicionVenta.Empleado.descripcion;
            monedaLBL.Text = rendicionVenta.Moneda.descripcion;
            comentarioLBL.Text = rendicionVenta.comentario;

            decimal totalDocumento=rendicionVenta.RendicionVentaItems.Sum(p => p.total);
            decimal totalliquidacion=rendicionVenta.LiquidacionVentas.Sum(p => p.total);

            simbol1LBL.Text = rendicionVenta.Moneda.simbol;
            simbol2LBL.Text = rendicionVenta.Moneda.simbol;
            
            totalDocumentoLBL.Text = totalDocumento.ToString("N2");
            totalDepositoLBL.Text = totalliquidacion.ToString("N2");


            idColeccion.Value = Parametros.GenerarID().ToString();
            LoadItem(rendicionVenta.idInternal);
            LoadItemLiquidacion(rendicionVenta.idInternal);
            RendicionVentaItemGrid1.Load(idColeccion.Value.ToInt(), internalID.Value.ToInt());
            LiquidacionVentaGrid1.Load(idColeccion.Value.ToInt(), internalID.Value.ToInt(), idProyecto.Value.ToInt(), rendicionVenta.idMoneda);
            LiquidacionVentaGrid1.HideFooter();
            LiquidacionVentaGrid1.HideEdit();
            RendicionVentaItemGrid1.HideFooter();
            RendicionVentaItemGrid1.HideEdit();

            if (rendicionVenta.ConceptoItem.idInternal!=3)
            {
              LiquidacionVentaGrid1.HideRetencion();
            }
            

            
        }


        private void LoadItem(int idParent)
        {

            DataTable ordenVentaItemList = Util.EntidadToDataTable(bol.GetRendicionVentaItem(idParent));

            DataSet ds = new DataSet();

            ordenVentaItemList.TableName = bol.RENDICIONVENTAITEMINFO;

            ds.Tables.Add(ordenVentaItemList);
            ds.AcceptChanges();

            Session[idColeccion.Value] = ds;
        }
        private void LoadItemLiquidacion(int idParent)
        {

            DataTable ordenVentaItemList = Util.EntidadToDataTable(bol.GetLiquidacionVenta(idParent));

            DataSet ds = (DataSet)Session[idColeccion.Value];

            ordenVentaItemList.TableName = bol.LIQUIDACIONVENTAINFO;

            ds.Tables.Add(ordenVentaItemList);
            ds.AcceptChanges();

            Session[idColeccion.Value] = ds;
        }

        private void LoadRendicionVentaItem(int idParent)
        {
            RendicionVentaItemGrid1.DataSource = bol.GetRendicionVentaItem(idParent);
            RendicionVentaItemGrid1.DataBind();
        }

        private void LoadLiquidacionVenta(int idParent)
        {
            //LiquidacionVentaGrid1.Load(idcoleccion,idParent,idProyecto.;
            //LiquidacionVentaGrid1.DataBind();
            //LiquidacionVentaGrid1.HideFooter();
            //LiquidacionVentaGrid1.HideEdit();

        }

        protected void button(object sender, EventArgs e)
        {
            try
            {

                if (((Button)sender).ID == refreshBTN.ID)
                {
                    FormatForm();
                }
                if (((Button)sender).ID==nuevoBTN.ID)
                {
                    Response.Redirect("~/VentaAdmin/RendicionVenta/RendicionVentaOPTEditForm.aspx?type=A&idProyecto={0}".Fmt(idProyecto.Value), true);
                }
                if (((Button)sender).ID == EditarBTN.ID)
                {
                    Response.Redirect("~/VentaAdmin/RendicionVenta/RendicionVentaEditForm.aspx?type=E&id={0}&idProyecto={1}".Fmt(internalID.Value, idProyecto.Value), true);
                }
                if (((Button)sender).ID == eliminarBTN.ID)
                {
                    bol.Delete(_db,internalID.Value.ToInt());
                    Response.Redirect("~/VentaAdmin/RendicionVenta/RendicionVentaListForm.aspx?type=E&idProyecto={0}".Fmt(idProyecto.Value), true);
                    //Response.Redirect(paginaAnt.Value, true);
                }
                if (((Button)sender).ID == ListaBTN.ID)
                {
                    Response.Redirect("~/VentaAdmin/RendicionVenta/RendicionVentaListForm.aspx?type=E&idProyecto={0}".Fmt(idProyecto.Value), true);
                }

                
                if (((Button)sender).ID == anteriorBTN.ID)
                {
                    int idAnterior=new DAL.UILocalizacion().getidAnterior(DbUtil.Db, internalID.Value.ToInt(),idEtapa.Value.ToInt()); //proyecto venta
                    Response.Redirect("~/VentaAdmin/RendicionVenta/RendicionVentaReadForm.aspx?type=E&id={0}".Fmt(idAnterior), true);
                }
                if (((Button)sender).ID == siguienteBTN.ID)
                {
                    int idSiguiente = new DAL.UILocalizacion().getidAnterior(DbUtil.Db, internalID.Value.ToInt(), idEtapa.Value.ToInt()); //proy
                    Response.Redirect("~/VentaAdmin/RendicionVenta/RendicionVentaReadForm.aspx?type=E&id={0}".Fmt(idSiguiente), true);
                }

            }
            catch (SqlException sqlex)
            {
                WebServerSideSqlError.Log(sqlex);

                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('" + sqlex.Message.Replace("'", "") + "');", true);


            }
            catch (Exception ex)
            {
                WebServerSideError.Log(ex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                     "uniqueKey" + DateTime.Now, "alert('" + ex.Message.Replace("'", "") + "');", true);

            }
        }

    }
}